import mitmproxy.http
from mitmproxy import ctx


class ListenHttp:

    def http_connect(self, flow: mitmproxy.http.HTTPFlow):
        '''
        调用时间： 目的是与服务器建立代理连接，仅是 client 与 proxy 的之间的交流，
        所以 CONNECT 请求不会触发 request、response 等其他常规的 HTTP 事件。
        :param flow:
        :return:
        '''
        pass

    def request(self, flow: mitmproxy.http.HTTPFlow):
        '''
        调用时间：来自客户端的 HTTP 请求被成功完整读取。
        :param flow:
        :return:
        '''
        pass

    def response(self, flow: mitmproxy.http.HTTPFlow):
        '''
        调用时间：来自服务端端的 HTTP 响应被成功完整读取。
        :param flow:
        :return:
        '''
        pass

    def error(self, flow: mitmproxy.http.HTTPFlow):
        '''
        调用时间：发生了一个 HTTP 错误。比如无效的服务端响应、连接断开等。
        :param flow:
        :return:
        '''
        pass


addons = [
    ListenHttp()
]
